Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

работа PHP... (Boglen)
Author Message
Boglen
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Oct 30, 2005 11:29 am (написано за 1 минуту 10 секунд)
   Post subject: работа PHP...
Reply with quote

Извините конечно, может я не знаю тонкостей PHP. Но у меня возникла проблемка.
функция preg_replace_callback обрабатывает только 2727 байт. А остальное обрезает нафик. Подскажите может это в конфигах каких-то исправляется?
Back to top
Владимир Хоменко
Участник форума



Joined: 11 Jun 2004
Posts: 427
Карма: 42
   поощрить/наказать

Location: Николаев, Украина

PostPosted: Sun Oct 30, 2005 4:41 pm (спустя 5 часов 11 минут; написано за 58 секунд)
   Post subject:
Reply with quote

Boglen wrote:
функция preg_replace_callback обрабатывает только 2727 байт
По-моему, в этом Вы ошибаетесь. Тестовый пример приведите, пожалуйста.
Back to top
View user's profile Send private message Send e-mail
Боглен
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Oct 30, 2005 6:01 pm (спустя 1 час 20 минут; написано за 5 минут 11 секунд)
   Post subject:
Reply with quote

мне сейчас далеко его вытягивать. Суть кода
$c = preg_replace_callback("'\{@MODE\:(.*?)\}(.*?)\{@CLOSE\}'si","myfunc",$c);

function myfunc($matches[2]) {
   if($GLOBAL['FIND']!=$matches[1]) {
    return '';
   }
   else
      return $matches[3];
}

допустим в $c выдается файл на 4кбайта.

Работа прег реплэйса обрывается на 2727 символе. Он у меня как раз попал на конструкцию вида
{@MODE:TEST}
content
{@CLOSE}

из-за чего у меня ненужные куски кода вываливаются. Я поэксперементировал...правда тока на денвере...в любом случае прег заканчивает работу на 2727 символе,..
Back to top
Владимир Хоменко
Участник форума



Joined: 11 Jun 2004
Posts: 427
Карма: 42
   поощрить/наказать

Location: Николаев, Украина

PostPosted: Sun Oct 30, 2005 6:34 pm (спустя 32 минуты; написано за 3 минуты 48 секунд)
   Post subject:
Reply with quote

1. Что значит
Боглен wrote:
Работа прег реплэйса обрывается
?

2. Надеюсь, что это опечатка при описании формальной переменной :
Боглен wrote:
function myfunc($matches[2]) {
Покажите мне в каком месте Вы вычисляете длину чего-то-там и она оказывается 2727?

Вот Вам пока контрпример:
Code (php): скопировать код в буфер обмена
        $str = "a";
        for ($i = 0; $i < 16; $i++) $str .= $str;
       
        print (www.php.net/print) "Length = ".strlen($str)."<br>";
       
        preg_replace_callback (www.php.net/preg_replace_callback)("#(.*)#", "myfunc", $str);
       
        function myfunc($s) {
                print (www.php.net/print) "Callback length = ".strlen($s[1])."<br>";
        }
Output:
Code (any language): скопировать код в буфер обмена
Length = 65536
Callback length = 65536
Callback length = 0
Что означает, что preg_replace_callback обрабатывает ровно столько, сколько ему дают.
Back to top
View user's profile Send private message Send e-mail
Боглен
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Oct 31, 2005 7:12 am (спустя 12 часов 38 минут; написано за 1 минуту 39 секунд)
   Post subject:
Reply with quote

Зодрали...
Quote:
    function tplParse($file,$block,$mode) {
        GLOBAL $CFG;
        
        $GLOBALS['TPLARRAYS'] = $block;
        $GLOBALS['TPLMODE'] = $mode;
        $GLOBALS['TPLSETARRAY'] = array();
        
        $file = $CFG['TPL'].$file.".tpl";
        if(!$f = fopen($file,"r"))
            return ERRNO_1201.": ".$file;
        $contents = fread($f,1024*100);
            $StrRightsPattern = "'\{@(.*?)\:(.*?)\}(.*?)\{@CLOSE_CHECKER_BLOCK\}'si";
        $contents = preg_replace_callback($StrRightsPattern,array("TemplatesParser","tplVisibler"),$contents);
        return $contents;
    }


    function tplVisibler($matches) {
        if($matches[1]=="URIGHTS") {
            global $userdata;
            if(StrFinder($userdata['user_rights'],$matches[2])) {
                return $matches[3];
            }
            else {
                $matches[3] = preg_replace('#href=\"(.*?)\"#si','href="return false;"',$matches[3]);
                $matches[3] = preg_replace('#onclick=\"(.*?)\"#si','onlick="href="return false;"',$matches[3]);
                return "<strike>".$matches[3]."</strike>";
            }
        }
        //--------------------------
        if($matches[1]=="MODE") {
            if($matches[2]==$GLOBALS['TPLMODE']) {
                $GLOBALS['TPLMODE'] = "ERASED_FIELD";
                array_push($GLOBALS['TPLSETARRAY'],$matches[3]);
                
                return '<br><font color="red">-------------Пропущено-------------</font><BR>'.$matches[3].'<font color="red">-------------Пропущено-------------</font><BR>';
            }
            else return '<font color="red">-------------Вырезано-------------</font><BR>'.$matches[3].'<BR><font color="red">-------------Вырезано-------------</font><br>';
        }
            
    }
Остальные преобразования я убрал чтобы не мешали.

Код шаблона:
Quote:
{@MODE:MAIN}
<font class="smallText">
<B>Секция приватных сообщений.</B><BR>
<BR>
&nbsp;Ящик:<BR>
&nbsp;&nbsp;<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|COMEIN|0',insHTML);">»Входящие</font> ({BOX-COMEIN-NUM})<BR>
&nbsp;&nbsp;<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|OUTPUTED|0',insHTML);">»Отправленные</font> ({BOX-OUTPUTED-NUM})<BR>
&nbsp;&nbsp;<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|BLACKER|0',insHTML);">»Черновики</font> ({BOX-BLACKER-NUM})<BR>
&nbsp;&nbsp;<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|ARC|0',insHTML);">»Архив</font> ({BOX-ARC-NUM})<BR>
&nbsp;&nbsp;<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|DELETED|0',insHTML);">»Корзина</font> ({BOX-DELETED-NUM})<BR>
</font>
<BR>
{@CLOSE_CHECKER_BLOCK}

{@MODE:COMEIN}
<B>Входящие сообщения...</B><BR><BR>
{&BOX-COMEIN-CONTENT}
<input type="checkbox" value=""> <B>№{id}</B> от "<u>{sender_id}</u>" Тема:"{label}"<BR>
{&ARRAY_END}
<BR>Входящих сообщений нету...<BR><BR>
{&ARRAY_ELSE_END}
<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|MAIN|0',insHTML);">»Назад</font>
{@CLOSE_CHECKER_BLOCK}

{@MODE:OUTPUTED}
<B>Отправленные сообщения...</B><BR><BR>
{&BOX-OUTPUTED-CONTENT}
<B>№{id}</B> от "<u>{sender_id}</u>" Тема:"{label}"<BR>
{&ARRAY_END}
<BR>Отправленных сообщений нету...<BR>
{&ARRAY_ELSE_END}
<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|MAIN|0',insHTML);">»Назад</font>
{@CLOSE_CHECKER_BLOCK}

{@MODE:BLACKER}
<B>Черновики...</B><BR><BR>
{&BOX-BLACKER-CONTENT}
<B>№{id}</B> от "<u>{sender_id}</u>" Тема:"{label}"<BR>
{&ARRAY_END}
<BR>Недописанных сообщений нету...<BR>
{&ARRAY_ELSE_END}
<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|MAIN|0',insHTML);">»Назад</font>
{@CLOSE_CHECKER_BLOCK}

{@MODE:DELETED}
<B>Корзина...</B><BR><BR>
{&BOX-DELETED-CONTENT}
<input type="checkbox" value=""> &nbsp;<B>№{id}</B> от "<u>{sender_id}</u>" Тема:"{label}"<BR>
{&ARRAY_END}
<BR>Корзина пуста...<BR>
{&ARRAY_ELSE_END}
<BR>
<input type="button" class="SUBMIT" value="Отчистить выбранное">&nbsp;
<input type="button" class="SUBMIT" value="Отчистить все">&nbsp;<BR>
<input type="button" class="SUBMIT" value="Переместить"> выделенное в папку
<select ><option>test1</option></select>
<br>
<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|MAIN|0',insHTML);">»Назад</font>
{@CLOSE_CHECKER_BLOCK}

{@MODE:ARC}
<B>Архив сообщений...</B><BR><BR>
{&BOX-ARC-CONTENT}
<input type="checkbox" value=""> &nbsp;<B>№{id}</B> от "<u>{sender_id}</u>" Тема:"{label}"<BR>
{&ARRAY_END}
<BR>Архив пуст...<BR>
{&ARRAY_ELSE_END}
<BR>
<font class="priv_font" onclick="javascript:caller.SendHTTPRequest('PMESS|MAIN|0',insHTML);">»Назад</font>
{@CLOSE_CHECKER_BLOCK}
Результат
Quote:
-------------Пропущено-------------
Секция приватных сообщений.

 Ящик:
  »Входящие (1)
  »Отправленные (0)
  »Черновики (0)
  »Архив (0)
  »Корзина (1)

-------------Пропущено-------------
-------------Вырезано-------------
Входящие сообщения...

 №1 от "Боглен" Тема:"Тест"
»Назад
-------------Вырезано-------------
-------------Вырезано-------------
Отправленные сообщения...


Отправленных сообщений нету...
»Назад
-------------Вырезано-------------
-------------Вырезано-------------
Черновики...


Недописанных сообщений нету...
»Назад
-------------Вырезано-------------
-------------Вырезано-------------
Корзина...


Корзина пуста...

   
 выделенное в папку test1
»Назад
-------------Вырезано-------------
{@MODE:ARC} Архив сообщений...

{&BOX-ARC-CONTENT} №{id} от "{sender_id}" Тема:"{l
Видили где обрывается? Если я сверху добавлю пару строчек то результат снизу укоротится на них же...
Back to top
Боглен
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Oct 31, 2005 8:52 am (спустя 1 час 39 минут; написано за 15 секунд)
   Post subject:
Reply with quote

Не зря надеетесь. Это действительно очепятка.
Back to top
Владимир Хоменко
Участник форума



Joined: 11 Jun 2004
Posts: 427
Карма: 42
   поощрить/наказать

Location: Николаев, Украина

PostPosted: Mon Oct 31, 2005 12:24 pm (спустя 3 часа 31 минуту; написано за 4 секунды)
   Post subject:
Reply with quote

Боглен wrote:
Зодрали...
forum.dklab.ru/about/todo/PravilaEtogoForuma-ProchitayteObyazatelno.html
Back to top
View user's profile Send private message Send e-mail
Владимир Хоменко
Участник форума



Joined: 11 Jun 2004
Posts: 427
Карма: 42
   поощрить/наказать

Location: Николаев, Украина

PostPosted: Mon Oct 31, 2005 12:36 pm (спустя 12 минут; написано за 55 секунд)
   Post subject:
Reply with quote

Боглен

Еще раз Вам говорю, функция preg_replace_callback обрабатывает столько, сколько ей дают. Ищите ошибку в другом месте
Back to top
View user's profile Send private message Send e-mail
йокодзуна Мусасимару
Заглянувший



Joined: 01 Nov 2005
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Tue Nov 01, 2005 11:54 am (спустя 23 часа 17 минут; написано за 1 минуту 27 секунд)
   Post subject:
Reply with quote

еще раз извините. Проблемма исправилась хотя в чем дело было так и не понятно. Сносил операционку, поставил все заново и проблема исчезла..
Back to top
View user's profile Send private message
йокодзуна Мусасимару
Заглянувший



Joined: 01 Nov 2005
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Wed Nov 02, 2005 6:21 pm (спустя 1 день 6 часов 26 минут; написано за 1 минуту 24 секунды)
   Post subject:
Reply with quote

А вот в чем собственно была проблемма. Как не странно мешал Agnitum Outpost Pro. При его включении на WinXP SP2 каллбэк обрывает работу раньше конца файла. Может быть создателям пригодиться
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Thu Nov 03, 2005 9:50 am (спустя 15 часов 29 минут; написано за 2 минуты 22 секунды)
   Post subject:
Reply with quote

Boglen wrote:
Как не странно мешал Agnitum Outpost Pro
Это совершенно не странно. Outpost - файрвол передовой, но идею персонального веб-сервера воспринимает с трудом: Сходите, пожалуйста, в Поиск по запросу «outpost аутпост». Спасибо!
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Nov 21, 2005 12:33 am (спустя 17 дней 14 часов 43 минуты; написано за 1 минуту 30 секунд)
   Post subject:
Reply with quote

йокодзуна Мусасимару wrote:
Как не странно мешал Agnitum Outpost Pro. При его включении на WinXP SP2 каллбэк обрывает работу раньше конца файла
Все-таки позвольте усомниться в точности этого заявления. Может быть, Аутпост еще на что-то влияет, что приводит к передаче неверных параметров в preg_replace_callback, или же к неверному выводу результатов работы этой функции. Но вот то, что он влияет НА САМУ ФУНКЦИЮ, в высшей степени невероятно. Если не верите, попробуйте написать МИНИМАЛЬНЫЙ неработающий код, как это написано в Как правильно задавать вопросы: статья, обязательная к прочтению (citforum.ru/howto/smart-questions-ru.shtml), и на нем все воспроизвести.
Back to top
View user's profile Send private message Send e-mail
FlashMasters
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Nov 25, 2005 10:35 am (спустя 4 дня 10 часов 2 минуты; написано за 5 минут 44 секунды)
   Post subject: в базовом пакете связанном с PHP5 не передаются данные по ссылкам методом get
Reply with quote

Народ, помогите пожалуйста советом. До этого я работал с рнр4 также через денвер и всё было нормально. Скачал базовый комплект с рнр5, купил по нему книгу, и на примере с передачей данных по ссылкам методом get & post ничего не передаётся. Я встречал уже такую проблему на одном зарубежном серваке, как помню закинул туда свой сайт, и там также не передовалися данные, ну я естественном был обижен и злостно огорчён, т. к. бесплатный домен сом и бесплатные 100 метров с поддержкой рнр трудно где-либо найти, ну это совсем другая история... я думаю что здесь что-то в конфигурационных настройках рнр или апача, беда только в том, что я никогда в них не разбирался, т. к. занимался программированием, а не администрированием, в общем, народ, подскажите, если знаете, что мне делать!
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Nov 25, 2005 7:18 pm (спустя 8 часов 43 минуты; написано за 8 секунд)
   Post subject:
Reply with quote


М

Оффтопик.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML